#!/usr/bin/env python3
"""
测试 Python 通过TCP Socket调用 Android API 的脚本

这是一个完全独立的实现，直接通过TCP Socket通信。
不需要广播，不需要文件系统，直接双向通信。

使用方法:
    python python_android_api_tcp_example.py
"""

import sys
import time

def test_tcp_api():
    """测试通过TCP Socket调用Android API"""
    print("=" * 60)
    print("测试 Python 通过TCP Socket调用 Android API")
    print("=" * 60)
    
    try:
        from android_api_tcp import AndroidAPITCP
    except ImportError:
        print("❌ 无法导入 android_api_tcp 模块")
        print("请确保 android_api_tcp.py 文件存在")
        return
    
    api = AndroidAPITCP()
    
    print(f"\n连接到: {api.host}:{api.port}")
    print("提示: 确保PythonApiSocketService已启动")
    print("启动方式: am startservice -n com.termux/.app.api.PythonApiSocketService")
    
    # 测试1: 获取设备信息
    print("\n1. 测试获取设备信息...")
    result = api.get_device_info()
    if result and result.get('status') == 'success':
        print("✓ 成功获取设备信息:")
        print(result.get('data', ''))
    else:
        print(f"✗ 失败: {result}")
        if result and '连接被拒绝' in result.get('data', ''):
            print("\n⚠️  服务器未运行，请先启动服务:")
            print("  am startservice -n com.termux/.app.api.PythonApiSocketService")
            print("\n或者检查服务是否在运行:")
            print("  am service list | grep PythonApiSocketService")
            print("\n按 Enter 键退出...")
            try:
                input()
            except (EOFError, KeyboardInterrupt):
                pass
            return
    
    # 测试2: 执行计算
    print("\n2. 测试执行计算...")
    result = api.calculate("10+5")
    if result and result.get('status') == 'success':
        print(f"✓ 计算结果: 10+5 = {result.get('data', '')}")
    else:
        print(f"✗ 失败: {result}")
    
    result = api.calculate("20*3")
    if result and result.get('status') == 'success':
        print(f"✓ 计算结果: 20*3 = {result.get('data', '')}")
    
    result = api.calculate("100/4")
    if result and result.get('status') == 'success':
        print(f"✓ 计算结果: 100/4 = {result.get('data', '')}")
    
    # 测试3: 显示Toast
    print("\n3. 测试显示Toast...")
    result = api.show_toast("来自TCP Socket的测试消息")
    if result and result.get('status') == 'success':
        print(f"✓ {result.get('data', '')}")
    else:
        print(f"✗ 失败: {result}")
    
    # 测试4: 显示通知
    print("\n4. 测试显示通知...")
    result = api.show_notification("TCP Socket测试", "这是一条来自TCP Socket的测试通知")
    if result and result.get('status') == 'success':
        print(f"✓ {result.get('data', '')}")
    else:
        print(f"✗ 失败: {result}")
    
    # 测试5: 性能测试
    print("\n5. 性能测试（连续调用10次）...")
    start_time = time.time()
    success_count = 0
    for i in range(10):
        result = api.calculate(f"{i}+{i}")
        if result and result.get('status') == 'success':
            success_count += 1
    elapsed = time.time() - start_time
    print(f"✓ 完成: {success_count}/10 成功，耗时 {elapsed:.3f}秒，平均 {elapsed/10*1000:.1f}ms/次")
    
    print("\n" + "=" * 60)
    print("测试完成！")
    print("=" * 60)
    print("\n优势:")
    print("✓ 直接TCP通信，无需广播")
    print("✓ 无需文件系统，直接返回结果")
    print("✓ 双向通信，延迟更低")
    print("✓ 更灵活，可以扩展更多功能")
    
    print("\n按 Enter 键退出...")
    try:
        input()
    except (EOFError, KeyboardInterrupt):
        pass

if __name__ == "__main__":
    test_tcp_api()

